using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Servico.Bovespa.Corretagem.Service.ServiceContract;

namespace Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation
{

    /// <summary>
    /// Classe de implementacao de contrato de servico Corretagem
    /// </summary>
    [SinacorServiceBehavior]
    public class Corretagem : Sinacor.Servico.Bovespa.Corretagem.Service.ServiceContract.ICorretagem
    {

        #region Construtor
        public Corretagem()
        {

        }
        #endregion


        #region ICorretagem Members

        public void AlterarPoliticaCorretagem(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.PoliticaCorretagemRequest request)
        {
            Translator.PoliticaCorretagemToPoliticaCorretagem translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.PoliticaCorretagemToPoliticaCorretagem();
            new BusinessLogic.PoliticaCorretagem().AlterarPoliticaCorretagem(translateRequest.Translate(request));
        }

        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.BaseCalculoResponse> ConsultarBaseCalculo()
        {
            Translator.BaseCalculoToBaseCalculo translateBusinessEntity = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.BaseCalculoToBaseCalculo();
            return translateBusinessEntity.TranslateToList(new BusinessLogic.BaseCalculo().ConsultarBaseCalculo());            
        }

        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.ControleBeneficioResponse> ConsultarControleBeneficio(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ConsultarControleBeneficioRequest request)
        {
            Translator.ConsultarControleBeneficioToConsultarControleBeneficio translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ConsultarControleBeneficioToConsultarControleBeneficio();
            Translator.ControleBeneficioToControleBeneficioResponse translateBusinessEntity = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ControleBeneficioToControleBeneficioResponse();
            return translateBusinessEntity.TranslateToList(new BusinessLogic.ControleBeneficio().ConsultarControleBeneficio(translateRequest.Translate(request)));            
        }

        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.DescontoDiferenciadoResponse> ConsultarDescontoDiferenciado(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ConsultarDescontoDiferenciadoRequest request)
        {
            Translator.ConsultarDescontoDiferenciadoToConsultarDescontoDiferenciado translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ConsultarDescontoDiferenciadoToConsultarDescontoDiferenciado();
            return new Translator.DescontoDiferenciadoToDescontoDiferenciadoResponse().TranslateToList(new BusinessLogic.DescontoDiferenciado().ConsultarDescontoDiferenciado(translateRequest.Translate(request)));
        }

        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.FaixaResponse> ConsultarFaixa(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ConsultarFaixaRequest request)
        {
            Translator.ConsultarFaixaToConsultarFaixa translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ConsultarFaixaToConsultarFaixa();
            return new Translator.FaixaToFaixaResponse().TranslateToList(new BusinessLogic.Faixa().ConsultarFaixa(translateRequest.Translate(request)));
        }

        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.PoliticaCorretagemResponse> ConsultarPoliticaCorretagem(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ConsultarPoliticaCorretagemRequest request)
        {
            Translator.ConsultarPoliticaCorretagemToConsultarPoliticaCorretagem translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ConsultarPoliticaCorretagemToConsultarPoliticaCorretagem();           
            return new Translator.PoliticaCorretagemToPoliticaCorretagemResponse().TranslateToList(new BusinessLogic.PoliticaCorretagem().ConsultarPoliticaCorretagem(translateRequest.Translate(request)));
        }

        public int? ConsultarProximoNumeroPoliticaCorretagem()
        {
            return new BusinessLogic.PoliticaCorretagem().ConsultarProximoNumeroPoliticaCorretagem();            
        }

        public int? ConsultarProximoNumeroTabelaPadrao()
        {
            return new BusinessLogic.TabelaPadrao().ConsultarProximoNumeroTabelaPadrao();
        }

        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.TabelaPadraoResponse> ConsultarTabelaPadrao(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ConsultarTabelaPadraoRequest request)
        {
            Translator.ConsultarTabelaPadraoToConsultarTabelaPadrao translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ConsultarTabelaPadraoToConsultarTabelaPadrao();
            return new Translator.TabelaPadraoToTabelaPadraoResponse().TranslateToList(new BusinessLogic.TabelaPadrao().ConsultarTabelaPadrao(translateRequest.Translate(request)));                       
        }

        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.TipoAplicacaoResponse> ConsultarTipoAplicacao()
        {
            return new Translator.TipoAplicacaoToTipoAplicacao().TranslateToList(new BusinessLogic.TipoAplicacao().ConsultarTipoAplicacao());            
        }

        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.TipoControleBeneficioResponse> ConsultarTipoControleBeneficio()
        {
            return new Translator.TipoControleBeneficioToTipoControleBeneficio().TranslateToList(new BusinessLogic.ControleBeneficio().ConsultarTipoControleBeneficio());            
        }

        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.TipoDescontoDiferenciadoResponse> ConsultarTipoDescontoDiferenciado()
        {
            return new Translator.TipoDescontoDiferenciadoToTipoDescontoDiferenciado().TranslateToList(new BusinessLogic.DescontoDiferenciado().ConsultarTipoDescontoDiferenciado());
        }

        public List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.VerificacaoResponse> ConsultarVerificacao(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ConsultarVerificacaoRequest request)
        {
            Translator.ConsultarVerificacaoToConsultarVerificacao translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ConsultarVerificacaoToConsultarVerificacao();
            return new Translator.VerificacaoToVerificacaoResponse().TranslateToList(new BusinessLogic.Verificacao().ConsultarVerificacao(translateRequest.Translate(request)));
        }

        public void ExcluirControleBeneficio(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ExcluirControleBeneficioRequest request)
        {
            Translator.ExcluirControleBeneficioToExcluirControleBeneficio translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ExcluirControleBeneficioToExcluirControleBeneficio();
            new BusinessLogic.ControleBeneficio().ExcluirControleBeneficio(translateRequest.Translate(request));
        }

        public void ExcluirDescontoDiferenciado(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ExcluirDescontoDiferenciadoRequest request)
        {
            Translator.ExcluirDescontoDiferenciadoToExcluirDescontoDiferenciado translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ExcluirDescontoDiferenciadoToExcluirDescontoDiferenciado();
            new BusinessLogic.DescontoDiferenciado().ExcluirDescontoDiferenciado(translateRequest.Translate(request));
        }

        public void ExcluirFaixa(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ExcluirFaixaRequest request)
        {
            Translator.ExcluirFaixaToExcluirFaixa translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ExcluirFaixaToExcluirFaixa();
            new BusinessLogic.Faixa().ExcluirFaixa(translateRequest.Translate(request));            
        }

        public void ExcluirPoliticaCorretagem(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.PoliticaCorretagemRequest request)
        {
            Translator.PoliticaCorretagemToPoliticaCorretagem translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.PoliticaCorretagemToPoliticaCorretagem();
            new BusinessLogic.PoliticaCorretagem().ExcluirPoliticaCorretagem(translateRequest.Translate(request));
        }

        public void ExcluirTabelaPadrao(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.TabelaPadraoRequest request)
        {
            Translator.TabelaPadraoToTabelaPadrao translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.TabelaPadraoToTabelaPadrao();
            new BusinessLogic.TabelaPadrao().ExcluirTabelaPadrao(translateRequest.Translate(request));
        }

        public void ExcluirVerificacao(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ExcluirVerificacaoRequest request)
        {
            Translator.ExcluirVerificacaoToExcluirVerificacao translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ExcluirVerificacaoToExcluirVerificacao();
            new BusinessLogic.Verificacao().ExcluirVerificacao(translateRequest.Translate(request));
        }

        public void SalvarControleBeneficio(List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.ControleBeneficioRequest> requests)
        {
            Translator.ControleBeneficioToControleBeneficio translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.ControleBeneficioToControleBeneficio();
            new BusinessLogic.ControleBeneficio().SalvarControleBeneficio(translateRequest.TranslateToList(requests));
        }

        public void SalvarDescontoDiferenciado(List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.DescontoDiferenciadoRequest> requests)
        {
            Translator.DescontoDiferenciadoToDescontoDiferenciado translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.DescontoDiferenciadoToDescontoDiferenciado();
            new BusinessLogic.DescontoDiferenciado().SalvarDescontoDiferenciado(translateRequest.TranslateToList(requests));
        }

        public void SalvarFaixa(List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.FaixaRequest> requests)
        {
            Translator.FaixaToFaixa translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.FaixaToFaixa();
            new BusinessLogic.Faixa().SalvarFaixa(translateRequest.TranslateToList(requests));
        }

        public void SalvarPoliticaCorretagem(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.PoliticaCorretagemRequest request, System.Boolean ConfirmarInclusao)
        {
            Translator.PoliticaCorretagemToPoliticaCorretagem translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.PoliticaCorretagemToPoliticaCorretagem();
            new BusinessLogic.PoliticaCorretagem().SalvarPoliticaCorretagem(translateRequest.Translate(request), ConfirmarInclusao);
        }

        public void SalvarTabelaPadrao(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.TabelaPadraoRequest request)
        {
            Translator.TabelaPadraoToTabelaPadrao translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.TabelaPadraoToTabelaPadrao();
            new BusinessLogic.TabelaPadrao().SalvarTabelaPadrao(translateRequest.Translate(request));
        }

        public void SalvarVerificacao(List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.VerificacaoRequest> requests)
        {
            Translator.VerificacaoToVerificacao translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.VerificacaoToVerificacao();
            new BusinessLogic.Verificacao().SalvarVerificacao(translateRequest.TranslateToList(requests));
        }

        public void ValidarPoliticaCorretagem(Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Request.PoliticaCorretagemRequest request)
        {
            Translator.PoliticaCorretagemToPoliticaCorretagem translateRequest = new Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.PoliticaCorretagemToPoliticaCorretagem();
            new BusinessLogic.PoliticaCorretagem().ValidarPoliticaCorretagem(translateRequest.Translate(request));            
        }

        #endregion
    }
}
